// 管理用户数据的仓库
import { defineStore } from "pinia";
// 引入API
import { reqCode, reqUserLogin } from "@/api/hospital";
// 引入ts类型
import { LoginData, UserLoginResponseData } from '@/api/hospital/type'

const useUserStore = defineStore('user',{
    state:():any=>{
        return{
            dialogFormVisible:false,//控制登录对话框的显示与隐藏
            // 存储用户验证码
            code:'',
            // 存储用户信息
            userInfo: JSON.parse(localStorage.getItem('USERINFO') as string) ||{}
        }
    },
    actions:{
        // 获取验证码的方法
        async getCode(phone:string){
            let result:any = await reqCode(phone);
            if(result.code == 200){
                this.code = result.data
                return 'ok'
            }else{
                return Promise.reject(new Error(result.message))
            }
        },
        // 用户登录获取用户信息的方法
        async userLogin(LoginData:LoginData) {
            let result: any = await reqUserLogin(LoginData)
            if(result.code == 200){
                this.userInfo = result.data;
                // 存储为本地数据  存储的别名要是全大写
                localStorage.setItem('USERINFO', JSON.stringify(this.userInfo))
                return 'ok'
            }else{
                return Promise.reject(new Error(result.message))
            }
        },
        // 退出登录的方法
        logout(){
            // 清空pinia仓库的数据
            this.userInfo = {phone:'',code:''}
            // 清空本地数据
            localStorage.removeItem('USERINFO')
        },
        // 判断授权是否成功
        queryState(){
            // 开启定时器:每过一段时间就查看本地是否有用户信息
            let timer = setInterval(()=>{
                if (localStorage.getItem('USERINFO')){
                    // 有用户信息表示授权成功,关闭对话框
                    this.dialogFormVisible = false
                    // 存储仓库的用户数据
                    this.userInfo = JSON.parse(localStorage.getItem('USERINFO') as string)
                    // 清除定时器
                    clearInterval(timer);
                }
            },1000)
        }
    },
    getters:{

    }
})

// 对外暴露管理用户数据的仓库
export default useUserStore;